"use strict";

/**
 * 校验是否为电话号码, 包括手机和固话
 *
 * @since 0.0.2
 * @category 正则
 * @param {string|number} str 需要校验的字符串.
 * @param {object} config 配置参数.
 * @param {boolean} config.isDetail 是否返回详细信息, 为true时返回CheckResult, false时返回boolean 默认: false.
 *
 * @returns { boolean|CheckResult } 校验结果 或 结果对象.
 *
 * @typedef {object} CheckResult
 * @property {boolean} status 校验结果
 * @property {string} errorMsg 错误提示
 * @property {RexExp} reg 校验数据使用的RexExp对象
 *
 * @example
 *
 * z.isPhone('13112345678')
 * // => true
 * z.isPhone('13112345678', { isDetail: true })
 * // => { status: true, errorMsg: '', reg: /^1[3-9]\d{9}$/ }
 * z.isPhone('021-66666666')
 * // => true
 * z.isPhone('021-66666666', { isDetail: true })
 * // => { status: true, errorMsg: '', reg: /^(0\d{2,3}-)?\d{7,8}(-\d{1,6})?$/ }
 *
 */
var isMoble = require('./isMobile');

var isTel = require('./isTel');

function isPhone(str) {
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
      _ref$isDetail = _ref.isDetail,
      isDetail = _ref$isDetail === void 0 ? false : _ref$isDetail;

  if (isDetail) {
    var isT = isTel(str, {
      isDetail: isDetail
    });
    var isM = isMoble(str, {
      isDetail: isDetail
    });
    return isT.status ? isT : isM;
  }

  return isTel(str, {
    isDetail: isDetail
  }) || isMoble(str, {
    isDetail: isDetail
  });
}

module.exports = isPhone;